from protocols import Interface

class IFileSystemStorage(Interface):
    pass


class ISQLParser(Interface):
    '''
    ISQLParser takes a string upon instantiation. The string needs to be a valid
    SQL statement, as defined per subclass.
    '''

    def setupGrammar():
        '''
        This method defines the SQL language for the subclass's particular
        implementation, i.e., CREATE, INSERT, SELECT, etc., will all need
        subclasses of ISQLParser that define what to do in each case.

        After the SQL definition, the grammar for that specific SQL definition
        is defined. Again, like the differences of SQL definition between say,
        CREATE and INSERT, there are similar differences between the *grammar*
        definitions.
        '''

    def parseGrammar():
        '''
        This method parses the SQL string stored in the SQLParser object and returns a 
        'ParseResults' object, which can be treated as a list.  This is when the
        is processed against the defined grammar, and in turn checked against
        the language definition.
	    '''
